package com.nanning.system.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nanning.system.domain.SendComplete;
import com.nanning.system.mapper.SendCompleteMapper;
import com.nanning.system.service.ISendCompleteService;
import org.apache.poi.ss.usermodel.Sheet;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;

/**
 * <p>
 * 发送量完成情况 服务实现类
 * </p>
 *
 * @author zhurenwang
 * @since 2025-05-03
 */
@Service
public class SendCompleteServiceImpl extends ServiceImpl<SendCompleteMapper, SendComplete> implements ISendCompleteService {

    private static final Map<String, String> map = new HashMap<>();

    static {
        map.put("货物-桂林部-月度-月累完成-当月计划", "5,16-5,14");
        map.put("货物-桂林部-年度-年累完成-年度计划", "5,22-5,21");

        map.put("货物-鹧鸪江部-月度-月累完成-当月计划", "6,16-6,14");
        map.put("货物-鹧鸪江部-年度-年累完成-年度计划", "6,22-6,21");

        map.put("货物-柳州北部-月度-月累完成-当月计划", "7,16-7,14");
        map.put("货物-柳州北部-年度-年累完成-年度计划", "7,22-7,21");

        map.put("货物-柳州南部-月度-月累完成-当月计划", "8,16-8,14");
        map.put("货物-柳州南部-年度-年累完成-年度计划", "8,22-8,21");

        map.put("货物-金城江部-月度-月累完成-当月计划", "9,16-9,14");
        map.put("货物-金城江部-年度-年累完成-年度计划", "9,22-9,21");

        map.put("货物-来宾部-月度-月累完成-当月计划", "10,16-10,14");
        map.put("货物-来宾部-年度-年累完成-年度计划", "10,22-10,21");

        map.put("货物-南宁南部-月度-月累完成-当月计划", "11,16-11,14");
        map.put("货物-南宁南部-年度-年累完成-年度计划", "11,22-11,21");

        map.put("货物-崇左部-月度-月累完成-当月计划", "12,16-12,14");
        map.put("货物-崇左部-年度-年累完成-年度计划", "12,22-12,21");

        map.put("货物-田东部-月度-月累完成-当月计划", "13,16-13,14");
        map.put("货物-田东部-年度-年累完成-年度计划", "13,22-13,21");

        map.put("货物-百色部-月度-月累完成-当月计划", "14,16-14,14");
        map.put("货物-百色部-年度-年累完成-年度计划", "14,22-14,21");

        map.put("货物-兴义部-月度-月累完成-当月计划", "15,16-15,14");
        map.put("货物-兴义部-年度-年累完成-年度计划", "15,22-15,21");

        //集装箱
        map.put("集装箱-桂林部-月度-月累完成-当月计划", "21,22-21,20");
        map.put("集装箱-桂林部-年度-年累完成-年度计划", "21,15-21,14");

        map.put("集装箱-鹧鸪江部-月度-月累完成-当月计划", "22,22-22,20");
        map.put("集装箱-鹧鸪江部-年度-年累完成-年度计划", "22,15-22,14");

        map.put("集装箱-柳州北部-月度-月累完成-当月计划", "23,22-23,20");
        map.put("集装箱-柳州北部-年度-年累完成-年度计划", "23,15-23,14");

        map.put("集装箱-柳州南部-月度-月累完成-当月计划", "24,22-24,20");
        map.put("集装箱-柳州南部-年度-年累完成-年度计划", "24,15-24,14");

        map.put("集装箱-金城江部-月度-月累完成-当月计划", "25,22-25,20");
        map.put("集装箱-金城江部-年度-年累完成-年度计划", "25,15-25,14");

        map.put("集装箱-来宾部-月度-月累完成-当月计划", "26,22-26,20");
        map.put("集装箱-来宾部-年度-年累完成-年度计划", "26,15-26,14");

        map.put("集装箱-南宁南部-月度-月累完成-当月计划", "27,22-27,20");
        map.put("集装箱-南宁南部-年度-年累完成-年度计划", "27,15-27,14");

        map.put("集装箱-崇左部-月度-月累完成-当月计划", "28,22-28,20");
        map.put("集装箱-崇左部-年度-年累完成-年度计划", "28,15-28,14");

        map.put("集装箱-田东部-月度-月累完成-当月计划", "29,22-29,20");
        map.put("集装箱-田东部-年度-年累完成-年度计划", "29,15-29,14");

        map.put("集装箱-百色部-月度-月累完成-当月计划", "30,22-30,20");
        map.put("集装箱-百色部-年度-年累完成-年度计划", "30,15-30,14");

        map.put("集装箱-兴义部-月度-月累完成-当月计划", "31,22-31,20");
        map.put("集装箱-兴义部-年度-年累完成-年度计划", "31,15-31,14");
    }

    @Transactional(rollbackFor = Exception.class)
    @Override
    public void importData(Sheet sheet) {
        baseMapper.delete(new QueryWrapper<>());
        map.forEach((k, v) -> {
            SendComplete sendComplete = new SendComplete();
            String[] ks = k.split("-");
            String[] vs = v.split("-");
            String[] vs0 = vs[0].split(",");
            String[] vs1 = vs[1].split(",");
            sendComplete.setType(ks[0]);
            sendComplete.setArea(ks[1]);
            sendComplete.setTimeRange(ks[2]);
            sendComplete.setRealNum(BigDecimal.valueOf(sheet.getRow(Integer.parseInt(vs0[0])).getCell(Integer.parseInt(vs0[1])).getNumericCellValue()));
            sendComplete.setPlanNum(BigDecimal.valueOf(sheet.getRow(Integer.parseInt(vs1[0])).getCell(Integer.parseInt(vs1[1])).getNumericCellValue()));
            save(sendComplete);
        });
    }
}
